home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 21 / CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso / CUCD / Magazine / C_Tutorial / Part-9 / wb2 / menu.c < prev    next >
C/C++ Source or Header  |  1998-01-03  |  2KB  |  82 lines

  1. #include "menu.h"
  2. #include "visual.h"
  3.  
  4. #include<libraries/gadtools.h>
  5.  
  6. #include<stdio.h>
  7.  
  8. #include<clib/gadtools_protos.h>
  9. #include<clib/intuition_protos.h>
  10.  
  11. /* Global record of our menu strip */
  12. static struct Menu* menu = NULL;
  13.  
  14. /* Unset menu check mark */
  15. void uncheckToolBar(struct Window* win)
  16. {
  17.     struct MenuItem* item;
  18.     /* First, remove menu strip from window */
  19.     ClearMenuStrip(win);
  20.     /* 2,1 is Tool Bar item (see below) */
  21.     item = ItemAddress(menu, FULLMENUNUM(2,1,0));
  22.     /* Unset CHECKED flag */
  23.     item->Flags &= ~CHECKED;
  24.     /* Reattach menu strip to window */
  25.     ResetMenuStrip(win,menu);
  26. }
  27.  
  28. /* Create the menu strip, using GadTools menu functions */
  29. int createMenuStrip()
  30. {
  31.     /* The description of our menus */
  32.     struct NewMenu mymenu[] =
  33.     {
  34.         { NM_TITLE, "Project",            0,        0, 0, 0,},
  35.         {  NM_ITEM,        "Load",                "L",    0, 0, 0,},
  36.         {  NM_ITEM,        "Save",                "S",    0, 0, 0,},
  37.         {  NM_ITEM,        NM_BARLABEL,    0,        0, 0, 0,},
  38.         {  NM_ITEM,        "New",                "W",    0, 0, 0,},
  39.         {  NM_ITEM,        NM_BARLABEL,    0,        0, 0, 0,},
  40.         {  NM_ITEM,        "Quit",                "Q",    0, 0, 0,},
  41.         { NM_TITLE, "Pen",                    0,        0, 0, 0,},
  42.         {  NM_ITEM,        "Next",                "N",    0, 0, 0,},
  43.         {  NM_ITEM,        "Prev",                "P",    0, 0, 0,},
  44.         {  NM_ITEM,        NM_BARLABEL,    0,        0, 0, 0,},
  45.         {  NM_ITEM,        "Reset",            "R",    0, 0, 0,},
  46.         { NM_TITLE, "Tools",                0,        0, 0, 0,},
  47.         {  NM_ITEM,        "Screen Bar",    "C",    CHECKIT | MENUTOGGLE | CHECKED, 0, 0,},
  48.         /* Next item is index (2,1,0), see uncheckToolBar() above */
  49.         {  NM_ITEM,        "Tool Bar",        "T",    CHECKIT | MENUTOGGLE | CHECKED, 0, 0,},
  50.         {   NM_END, NULL,                        0,        0, 0, 0,},
  51.     };
  52.     if (menu = CreateMenus(mymenu, TAG_END))
  53.     {
  54.         APTR vinfo = getVisual();
  55.         if (LayoutMenus(menu, vinfo, TAG_END))
  56.             /* Succeeded */
  57.             return TRUE;
  58.         else
  59.             printf("Error: could not layout menus\n");
  60.     }
  61.     else
  62.         printf("Error: could not create menu strip\n");
  63.     /* Failed */
  64.     return FALSE;
  65. }
  66.  
  67. void freeMenuStrip()
  68. {
  69.     if(menu)
  70.     {
  71.         FreeMenus(menu);
  72.         /* Set to NULL to indicate that it's been freed */
  73.         menu = NULL;
  74.     }
  75. }
  76.  
  77. /* Give access to the private menu */
  78. struct Menu* getMenuStrip()
  79. {
  80.     return menu;
  81. }
  82.